/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import java.util.ArrayList;
import negocio.UsuarioBI;
import java.util.Date;
import java.util.List;
import javax.enterprise.inject.Model;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import modelo.ConsumidorPersona;
import modelo.Direccion;
import modelo.Persona;
import modelo.PersonaContacto;
import modelo.Usuario;
import pojos.PersonaVO;

/**
 *
 * @author Edgar
 */
@Named("crearUsuario")
@Model
@ViewScoped
public class CrearUsuarioCtrl {
    @Inject
    private PersonaVO personaVO;
    private String usuario;
    private String contrasena;
    @Inject
    private UsuarioBI usuarioBI;
    
    public void guardaUsuario(){
        try{
            Usuario usuarioEnt = new Usuario();
            usuarioEnt.setNombreUsuario(this.usuario);
            usuarioEnt.setContrasena(this.contrasena);
            usuarioEnt.setEstatus("A");
            usuarioEnt.setCorreo(this.usuario);
            
            /*System.out.println("Antes: "+usuarioEnt.getIdUsuario());
            usuarioDAO.crear(usuarioEnt);
            System.out.println("Despues: "+usuarioEnt.getIdUsuario());*/
            
            Persona personaEnt = new Persona();
            personaEnt.setNombre(this.personaVO.getNombre());
            personaEnt.setApellidoPaterno(this.personaVO.getApellidoPat());
            personaEnt.setApellidoMaterno(this.personaVO.getApellidoMat());
            personaEnt.setSexo(this.personaVO.getSexo());
            personaEnt.setFechaNacimiento(this.personaVO.getFechaNac());
            personaEnt.setDescripcion(this.personaVO.getDescripcion());
            List<PersonaContacto> personaContactos = new ArrayList<PersonaContacto>();
            if(personaVO.getCorreo() != null && !personaVO.getCorreo().equals("")){
                PersonaContacto personaCorreo = new PersonaContacto();
                personaCorreo.setContacto(personaVO.getCorreo());
                personaCorreo.setTipo("CORREO");
                personaContactos.add(personaCorreo);
            }
            if(personaVO.getTelefono() != null && !personaVO.getTelefono().equals("")){
                PersonaContacto personaTelefono = new PersonaContacto();
                personaTelefono.setContacto(personaVO.getTelefono());
                personaTelefono.setTipo("TELEFONO");
                personaContactos.add(personaTelefono);
            }
            personaEnt.setEstatus("A");
            
            ConsumidorPersona consumidorEnt = new ConsumidorPersona();
            consumidorEnt.setNombre(this.personaVO.getNombre() + "*");
            consumidorEnt.setDescripcion(personaVO.getDescripcion());
            consumidorEnt.setFechaCaptura(new Date());
            consumidorEnt.setEstatus("A");
            
            Direccion direccion = new Direccion();
            direccion.setCalle(this.personaVO.getDireccion().getCalle());
            direccion.setNumeroExterior(this.personaVO.getDireccion().getNumeroExterior());
            direccion.setNumeroInterior(this.personaVO.getDireccion().getNumeroInterior());
            direccion.setColonia(this.personaVO.getDireccion().getColonia());
            direccion.setRegion(this.personaVO.getDireccion().getRegion());
            direccion.setCodigoPostal(this.personaVO.getDireccion().getCodigoPostal());
            direccion.setEstado(this.personaVO.getDireccion().getEstado());
            direccion.setPais(this.personaVO.getDireccion().getPais());
            /*List<Consumidor> consumidores = new ArrayList<Consumidor>();
            consumidores.add(consumidorEnt);
            usuarioEnt.setConsumidorList(consumidores);*/
            
            usuarioBI.crear(usuarioEnt,personaEnt,consumidorEnt, direccion, personaContactos);
            
            //usuarioDAO.modifica(usuarioEnt);*/
                FacesMessage mes = new FacesMessage(FacesMessage.SEVERITY_INFO, "Guardado exitoso","Usuario insertado");
            FacesContext.getCurrentInstance().addMessage("Guardado exitoso", mes);
            FacesContext.getCurrentInstance().getExternalContext().redirect("/PRP/faces/index.xhtml");
        }catch(Exception e){
            e.printStackTrace();
            FacesMessage mes = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: "+e.getMessage(), "Error al insertar el usuario: "+e.getLocalizedMessage());
            FacesContext.getCurrentInstance().addMessage("Error en la inserción", mes);
        }
    }

    public PersonaVO getPersona() {
        return personaVO;
    }

    public void setPersona(PersonaVO persona) {
        this.personaVO = persona;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getContrasena() {
        return contrasena;
    }

    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }
    
}
